package DAO;



import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import Beans.MesaBean;
import Controller.AdministradorMesa;
import DTO.MesaDTO;
import HibernateUtils.HibernateUtil;
import Model.Mesa;



public class HibernateMesaDAO {

	private static HibernateMesaDAO instancia = null;
	private static SessionFactory sf = null;

	public static HibernateMesaDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new HibernateMesaDAO();
		} 
		return instancia;
	}
	
	public void grabarMesa(MesaBean m){
		/*Convierto el parametro a bean
		MesaBean aux = new MesaBean();
		aux.setCapacidad(m.getCapacidad());
		aux.setEstado(m.getEstado());
		
		Abro sesion y grabo el objeto*/
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(m);
		session.flush();
		session.getTransaction().commit();
		session.close();
	}

	public List<Mesa> getMesasDisponibles() {
		Session session = sf.openSession();
		List<MesaBean>mesas=session.createQuery("select m from MesaBean m where m.estado=?").setString(0, "disponible").list();
		session.close();
		return AdministradorMesa.getInstancia().fromBeanTOModel(mesas);
		
	}

	public void updateMesa(Mesa m) {
		
		MesaBean mb=AdministradorMesa.getInstancia().fromModelTOBean(m);
		
		Session session = sf.openSession();
		session.beginTransaction();
		session.saveOrUpdate(mb);
		session.flush();
		session.getTransaction().commit();
		session.close();
		
	}

	public MesaBean getMesa(int nroMesa) {
			
		Session session=sf.openSession();
		MesaBean m;
		m=(MesaBean)session.get(MesaBean.class,nroMesa);
		return m;
	

		
	}
	


}
